import axios from "axios";
import { getToken } from "@/composables/cookie";
import { showMessage } from "@/composables/util";
import { useUserStore } from "@/stores/user";

// 创建一个axios实例，并设置baseURL为"/api"，timeout为7000
const instance = axios.create({
  baseURL: "/api",
  timeout: 7000,
});

// 添加请求拦截器，用于处理请求前的逻辑
instance.interceptors.request.use(function (config) {
  const token = getToken();
  console.log("统一添加请求头中的 Token：" + token);
  // 如果token存在，则每个http header都加上token
  if (token) {
    config.headers['Authorization'] = 'Bearer ' + token
  }
  return config;
}, function (error) {
  // 请求错误时做些什么
  return Promise.reject(error);
}
);
// 添加响应拦截器，用于处理响应后的逻辑
instance.interceptors.response.use(
  // 响应成功时做些什么
  function (response) {
    return response.data;
  },
  function (error) {
    let status = error.response.status;
    if(status == 401){
      let userStore = useUserStore();
      userStore.logout();
      location.reload();
    }

    // 响应失败时做些什么
    let errorMsg = error.response.data.message || '请求失败';
    // 错误提示
    showMessage(errorMsg, 'error');

    return Promise.reject(error);
  }
);

// 导出axios实例
export default instance;
